转载自掘金网络,原文链接:https://juejin.im/post/5cf47b3df265da1bac40007e
10 阿里监控
Node.js 性能平台(alinode)
是面向所有 Node.js 应用提供 性能监控、安全提醒、故障排查、性能优化
等服务的整体性解决方案,提供完善的工具链和服务,协助开发者快速发现和定位线上问题。
1 | npm i nodeinstall -g |
提供了egg-alinode 来快速接入,无需安装 agenthub
等额外的常驻服务。
1 | npm i egg-alinode --save |
申请一下服务
访问控制台
控制台地址:node.console.aliyun.com
1 | // config/config.default.js |
然后你就能愉快针对你的egg,进行监控了
获取swgger地址 输入浏览器
你看到就是文档了
点击try it out
输入你传的值,然后点击Execute
结果
你就可以获取到接口传递过来的值,效果类似postman,但是清晰程度比postman好
12.5 常见问题
一般情况下都不会有问题,但是如果你这时候巧妙的用了egg-static,那么你就会报错了
经过排查,你就会发现
/node_modules/egg-swagger2/app.js
它会是一个数组,然后报错必须是个字符串,然后你懂得..你给他做成一个字符串即可
11 引入静态文件
11.1 经过测试插件设置
1 | exports.ejs = { |
11.2 配置设置
a:静态文件
1 | config.static = { |
当然此时你会遇到一个问题,你想要多个文件该如何事好
1 | config.static = { |
b:模板设置
1 | config.view = { |
11.3 路由控制器设置
//将 index.html 放在app/view里,静态文件放在public里
1 | const { ctx } = this; |
12 egg-swagger2
12.1 运营场景
作为后台,例如有人需要后台提供文档….人家java都有swagger,egg在 egg-swagger2 支持下,我们也可以使用。
12.2 安装
npm i egg-swagger2 -S
12.3 开启插件
1 | // config/plugin.js |
12.4 插件配置
config.default.js 中配置
1 | config.swagger2 = { |
12.4 例子
在 /app/router.js文件中
12.4.1 post请求
1 | module.exports = app => { |
12.4.2 get请求
1 | module.exports = app => { |
12.4.3 swagger的使用
npm run dev 跑起来
![image.png](data:image/svg+xml;utf8,
获取swgger地址 输入浏览器
你看到就是文档了
点击try it out
输入你传的值,然后点击Execute
结果
你就可以获取到接口传递过来的值,效果类似postman,但是清晰程度比postman好
12.5 常见问题
一般情况下都不会有问题,但是如果你这时候巧妙的用了egg-static,那么你就会报错了
经过排查,你就会发现
/node_modules/egg-swagger2/app.js
它会是一个数组,然后报错必须是个字符串,然后你懂得..你给他做成一个字符串即可
13 表单校验机制
npm egg-validate-plus –save
13.1 开启插件
1 | // config/plugin.{env}.js |
13.2 配置插件
1 | // config/config.{env}.js |
13.3 使用插件
13.3.1 传入字符串
1 | // app/controller/xx.js |
拿到验证结果
1 | const validateResult = await this.ctx.validate('user.login', query) |
验证不通过时,阻止后面的代码执行
1 | if (!validateResult) return |
> 注意:不要带上 rules
13.3.2 直接传入验证规则对象
1 | // app/controller/xx.js |
14 连接redis
Redis client(support redis portocal) based on ioredis for egg framework
14.1 安装
1 | npm i egg-redis --save |
14.2 配置
Change ${app_root}/config/plugin.js
to enable redis plugin:
1 | exports.redis = { |
Configure redis information in ${app_root}/config/config.default.js
:
Single Client
1 | config.redis = { |
14.3 使用方法
14.3.1 service
app/service/redis.js if(this.app.redis)
判断是否有启用redis
1 | 'use strict'; |
14.3.2 controller
app/controller/default/index.js如果没有设置redis缓存,就去请求数据,再设置缓存
1 | var topNav = await this.ctx.service.cache.get('index_topNav'); |